#include <iostream>
#include <vector>
#include <list>
#include <queue>
using namespace std;

#include "Stack.h"
#include "Queue.h"
#include "PriorityQueue.h"

void TestStack()
{
	//mihayou::Stack<int, vector<int>> s;
	mihayou::Stack<int> s;
	s.push(1);
	s.push(2);
	s.push(3);
	s.push(4);
	s.push(5);
	
	while (!s.empty())
	{
		cout << s.top() << " ";
		s.pop();
	}
	cout << endl;

}

void TestQueue()
{
	//mihayou::Queue<int, list<int>> q;
	mihayou::Queue<int> q;
	q.push(1);
	q.push(2);
	q.push(3);
	q.push(4);
	q.push(5);
	while (!q.empty())
	{
		cout << q.top() << " ";
		q.pop();
	}
	cout << endl;
}

void Test_priority()
{
	//priority_queue<int> pq;
	priority_queue<int,vector<int>,greater<int>> pq;
	pq.push(1);
	pq.push(2);
	pq.push(3);
	pq.push(4);
	pq.push(5);
	while (!pq.empty())
	{
		cout << pq.top() << " ";
		pq.pop();
	}
	cout << endl;
}

void Test_priority_queue()
{
	mihayou::priority_queue<int> pq;
	//mihayou::priority_queue<int,vector<int>, Greater<int>> pq;
	pq.push(1);
	pq.push(2);
	pq.push(3);
	pq.push(4);
	pq.push(5);
	while (!pq.empty())
	{
		cout << pq.top() << " ";
		pq.pop();
	}
	cout << endl;
}



int main()
{
	//TestStack();
	//TestQueue();
	//Test_priority();
	Test_priority_queue();
	return 0;
}


